1. Technical Field
This invention generally relates to data processing, and more specifically relates to the sharing of resources between logical partitions in a logically partitioned computer system.
2. Background Art
Since the dawn of the computer age, computer systems have evolved into extremely sophisticated devices that may be found in many different settings. Computer systems typically include a combination of hardware (e.g., semiconductors, circuit boards, etc.) and software (e.g., computer programs). As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
The combination of hardware and software on a particular computer system defines a computing environment. Different hardware platforms and different operating systems thus provide different computing environments. In recent years, engineers have recognized that it is possible to provide different computing environments on the same physical computer system by logically partitioning the computer system resources into different computing environments. The IBM Power5 computer systems developed by IBM are examples of computer systems that support logical partitioning. If logical partitioning on a IBM Power5 computer system is desired, partition manager code (referred to as a “hypervisor” in IBM Power5 terminology) is installed that allows defining different computing environments on the same platform. Once the partition manager is installed, logical partitions may be created that define different computing environments. The partition manager manages the logical partitions to assure that they can share needed resources in the computer system while maintaining the separate computing environments defined by the logical partitions.
A computer system that includes multiple logical partitions typically shares resources between the logical partitions. For example, a computer system with a single CPU could have two logical partitions defined, with 50% of the CPU allocated to each logical partition, with 33% of the memory allocated to the first logical partition and 67% of the memory allocated to the second logical partition, and with two different I/O slots allocated to the two logical partitions, one per partition. Once logical partitions are defined and shared resources are allocated to the logical partitions, each logical partition acts as a separate computer system. Thus, in the example above that has a single computer system with two logical partitions, the two logical partitions will appear for all practical purposes to be two separate and distinct computer systems.
In addition to having their own allocated resources, logical partitions may also share some resources that have been allocated to a different logical partition. When logical partitions share a resource, such as an I/O adapter, one of the logical partitions is typically designated as the “owner” of the resource, and other logical partitions may share the resource by communicating with the logical partition that owns the resource. For the discussion herein, the term “hosting partition” refers to a logical partition that owns (i.e., controls) a resource, and the term “hosted partition” refers to a logical partition that does not own the resource but that desires to use (or share) the resource by communicating with the hosting partition.
Software running on a hosting partition (such as the operating system software or a device driver) may periodically need to be updated, to fix a problem in the code or to add one or more new functions. Such an update may require a reboot of the hosting partition. In the prior art, this means that the hosting partition will stop receiving I/O requests for its shared I/O adapters, and the I/O will be unavailable until the reboot and re-initialization of the hosting partition is complete. In many computer systems that have multiple partitions, the time to reboot a hosting partition creates a delay in I/O performance that is excessive and undesirable. Such a delay appear as an I/O failure that may cause applications to fail due to unavailable I/O. Without a way to update a hosting partition in a way that does not cause undue performance penalties and application failures due to unavailable I/O, the computer industry will continue to suffer from unacceptable consequences that result from updating a hosting partition in a logically-partitioned computer system.